package com.flh.crm.web.listener;

import com.flh.crm.settings.service.DicService;
import com.flh.crm.settings.service.impl.DicServiceImpl;
import com.flh.crm.utils.ServiceFactory;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.util.*;

/**
 * @Author FLH
 * @Date 2020/8/1 10:35
 * @Version 1.0
 */
public class SysInitListener implements ServletContextListener {


    /**
     * 该方法是用来监听上下文对象的方法，当服务器启动，上下文域对象创建
     * 创建完之后，马上执行该方法
     *
     * sce该参数可以取得监听对象
     *    监听的什么对象就可以通过该方法取得
     *    监听上下文就取得上下文对象
     *
     * @param sce
     */
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("服务器处理数据字典开始");
        //System.out.println("上下文域对象创建了");
        //得到域对象
        ServletContext application = sce.getServletContext();

        //取得数据字典

        DicService ds = (DicService) ServiceFactory.getService(new DicServiceImpl());

        /*

         需要7个list

         打包成map
         map.put("appellation",dvlist1);
         map.put("clueStateList",dvlist2);
         .....



        */
        Map<String,Object> map = ds.getAll();

        //将map的数据存到域中
        Set<String> set = map.keySet();
        for (String key:set) {
            application.setAttribute(key,map.get(key));
        }

        System.out.println("服务器处理数据字典结束");
        //存到域中
        //application.setAttribute("",);

        //数据字典处理完毕之后，处理Stage2Possibility.properties文件
        //处理成java 中的键值对（map）
        //处理之后放到服务器中

        //解析properties文件
        ResourceBundle rb =ResourceBundle.getBundle("Stage2Possibility");

        Map<String,String> pMap = new HashMap<String,String>();

        Enumeration<String> e=  rb.getKeys();

        while (e.hasMoreElements()){
            String key = e.nextElement();
            String value = rb.getString(key);
            pMap.put(key,value);
        }

        application.setAttribute("pMap",pMap);


    }
}
